// build.rs
extern crate cmake;

fn main() {
    // 使用 cmake 构建 C++ 代码
    let dst = cmake::Config::new("cpp_src")
        .define("CMAKE_INSTALL_PREFIX", ".") // 设置安装路径
        .build();

    // 告诉 Cargo 链接生成的静态库
    println!("cargo:rustc-link-search=native={}/build", dst.display());
    println!("cargo:rustc-link-lib=static=allocation_recoder");
    println!("cargo:rustc-link-search=native={}/build/lib", dst.display());
    println!("cargo:rustc-link-lib=static=cpptrace");
    println!("cargo:rustc-link-lib=static=dwarf");
    println!("cargo:rustc-link-lib=static=zstd");
    println!("cargo:rustc-link-lib=z");
    // 显式链接 C++ 标准库（关键修复）
    println!("cargo:rustc-link-lib=dylib=stdc++");

    // 如果 C++ 代码有头文件，可以告诉 Cargo 重新运行构建脚本（如果头文件更改）
    println!("cargo:rerun-if-changed=cpp_src/allocation_recoder.cpp");
    println!("cargo:rerun-if-changed=cpp_src/CMakeLists.txt");
}